package cn.learn.activiti.service;

import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricVariableInstance;

import java.util.List;

/**
 * 操作历史任务
 *
 * @author huangyezhan
 * @version 1.0
 * @date 2021年03月17日15:54
 */
public interface IHistoricTaskService {
    /**
     * 获取个人处理的任务历史
     *
     * @param firstResult   第一个结果
     * @param maxResults    最大结果
     * @param authorization 授权
     * @return 返回结果
     */
    List<HistoricTaskInstance> historicTaskInstanceByAssignee(int firstResult, int maxResults, String authorization);

    /**
     * 查询指定人发起的任务
     *
     * @param authorization 发起人
     * @return 返回结果
     */
    List<HistoricProcessInstance> initiatedTask(String authorization);

    /**
     * 根据流程实例ID，获取指定的历史流程
     *
     * @param processInstanceId 流程实例ID
     * @return 返回结果
     */
    HistoricProcessInstance getProcessInstance(String processInstanceId);

    /**
     * 历史活节点信息
     *
     * @param processInstanceId 流程执行ID
     * @return 返回结果
     */
    List<HistoricActivityInstance> getHistoricActivityInstances(String processInstanceId);

    /**
     * 获取任务历史变量
     *
     * @param taskId 指定任务
     * @return 返回结果
     */
    List<HistoricVariableInstance> getHistoryVariablesByTaskId(String taskId);

    /**
     * 获取指定id的历史任务
     *
     * @param taskId 任务id
     * @return 返回结果
     */
    HistoricTaskInstance getHistoryTaskById(String taskId);

    /**
     * 根据业务ID获取历史任务信息
     *
     * @param businessKey 业务ID
     * @return 返回结果
     */
    List<HistoricTaskInstance> getHistoryTaskByBusinessKey(String businessKey);

}
